2005年07月25日
川俣晶の縁側ソフトウェア技術雑記 total 3290 count

Managed C++で書かれたテストクラスをNUnitが発見できない問題の原因と解決

Written By: 川俣 晶連絡先

問題 §

 Visual Studio.NET 2003を使用し、Managed C++を用いて、NUnit用のテストクラス、テストメソッドを作成した。

 しかし、実際にNUnitでテストを実行させると、テストクラスもテストメソッドもNUnitが発見できない。

原因 §

 テストクラスを宣言する際に、publicキーワードを忘れている可能性がある。

 この場合、以下のようにテストクラスを書き換えればOK。

__gc class T

↓↓↓↓↓↓↓↓

public __gc class T

このような問題が発生する理由 §

 通常、C++のクラスにはpublic修飾子を付ける構文がありません。

 Managed C++でも、__gcではないクラスには付けられません。

 それゆえに、付ける必要がないと思い込んでソースを書いていると、テストクラスもpublic修飾子を付けないで反射的に書いてしまう可能性があります。

 一般的に、外部からアクセス可能な__gcクラスを宣言するにはpublic修飾子が必要とされますが、同じ理由によりうっかり書き忘れの可能性があり得ます。

 ってか、まさに私がそのようなパターンではまりました (汗。

 未来の自分が困らないために、ここにメモっておこう。